package xrate

import (
	"gitee.com/xiaoyutab/xgotool/optional/xcache"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 奖品信息列表
//
//	batch_id	批次ID
//	start_id	星级ID
//	offset		跳过条数
//	limit		查询条数[-1表示查询全部]
func ProjectList(batch_id, start_id uint, offset, limit int) (int64, []Project, error) {
	if _default.DB == nil {
		return 0, nil, xerror.New("数据库未连接")
	}
	if batch_id == 0 {
		return 0, nil, xerror.New("批次ID不能为空")
	}
	// if start_id == 0 {
	// 	return 0, nil, xerror.New("星级ID不能为空")
	// }
	db := _default.DB.Table(_default.ProjectName).
		Where("batch_id", batch_id)
	if start_id > 0 {
		db = db.Where("start_id", start_id)
	}
	var count int64
	err := db.Count(&count).Error
	if err != nil {
		return 0, nil, err
	}
	lis := []Project{}
	if count <= 0 {
		return 0, lis, nil
	}
	if limit < 0 {
		err = db.Find(&lis).Error
	} else {
		err = db.Offset(offset).Limit(limit).Find(&lis).Error
	}
	if err != nil {
		return 0, nil, err
	}
	// 缓存写入
	for i := 0; i < len(lis); i++ {
		xcache.SetStruct(xcache.Key("xrate.project_info", lis[i].ID), lis[i])
	}
	return count, lis, nil
}
